package java_thinking.unit_11._11_11;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Random;

/**
 * @Description : Queue案例
 *      1.offer():将一个元素插入队尾，若失败放回false
 *      2.peek():返回队头/null
 *      3.element():返回队头/throw Error
 *      4.poll():移除返回队头/null
 *      5.remove():移除返回队头/throw Error
 *      6.queue窄化了对LinkedList的方法的访问权限，所以所运行的方法略少，
 *      7.注意,与 Queue相关的方法提供了完整而独立的功能。即,对于 Queue所继承的 Collection,
 *        在不需要使用它的任何方法的情况下,就可以拥有一个可用的Queue？？？
 * @author: cww
 * @DateTime: 2019-03-18 21:23
 */

public class QueueDemo {
    public static void printQ(Queue queue){
        //queue头不是空就删掉头并返回头
        while (queue.peek() !=null){
            System.out.print(queue.remove() + " ");
        }
    }

    public static void main(String[] args) {
        Queue<Integer> q = new LinkedList<>();
        Random random = new Random(47);
        for (int i=0;i<10;i++){
            //自动包装机制会自动将nextInt()方法的int结果转换为queue所需的Integer对象
            q.offer(random.nextInt(i+10));
        }
        printQ(q);
        System.out.println();
        Queue<Character> qStr = new LinkedList<>();
        for (char c:"Brontosarus".toCharArray()){
            //将Char c转换为qc所需的Character对象
            qStr.offer(c);
        }
        printQ(qStr);
    }
}
